/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-11-27     xuan       the first version
 */
#include<rtthread.h>
#include"board.h"

struct Led_s{
    uint8_t LED_R;
    uint8_t LED_B;
    uint8_t LED_G;
};//定义一个RGB结构体
struct Led_s Led;

void RGB_init(void){
    //获得led
    Led.LED_R=rt_pin_get("PE.1");
    Led.LED_G=rt_pin_get("PE.4");
    Led.LED_B=rt_pin_get("PA.1");
    //设置引脚为输出方式
    rt_pin_mode(Led.LED_R, PIN_MODE_OUTPUT);
    rt_pin_mode(Led.LED_G, PIN_MODE_OUTPUT);
    rt_pin_mode(Led.LED_B, PIN_MODE_OUTPUT);
}

//红灯
void RGB_Red(rt_bool_t on){
    rt_pin_write(Led.LED_G, PIN_HIGH);
    rt_pin_write(Led.LED_B, PIN_HIGH);
    if (on) {
        rt_pin_write(Led.LED_R, PIN_LOW);
    } else {
        rt_pin_write(Led.LED_R, PIN_HIGH);
    }
}
//绿灯
void RGB_Green(rt_bool_t on){
    rt_pin_write(Led.LED_R, PIN_HIGH);
    rt_pin_write(Led.LED_B, PIN_HIGH);
    if (on) {
        rt_pin_write(Led.LED_G, PIN_LOW);
    } else {
        rt_pin_write(Led.LED_G, PIN_HIGH);
    }
}
//蓝灯
void RGB_Blue(rt_bool_t on){
    rt_pin_write(Led.LED_R, PIN_HIGH);
    rt_pin_write(Led.LED_G, PIN_HIGH);
    if (on) {
        rt_pin_write(Led.LED_B, PIN_LOW);
    } else {
        rt_pin_write(Led.LED_B, PIN_HIGH);
    }
}

void rgb_thread_entry(void* p){
    RGB_init();
    while(1){
        rt_thread_mdelay(1000);
        RGB_Blue(1);
        rt_thread_mdelay(1000);
        RGB_Green(1);
        rt_thread_mdelay(1000);
        RGB_Red(1);
    }
}

int Thread_RGB(void){
    rt_thread_t thread=RT_NULL;
    thread=rt_thread_create("rgb", rgb_thread_entry, RT_NULL, 512, 10, 10);
    if(thread==RT_NULL){
        rt_kprintf("Thread_RGB Init ERROR");
        return RT_ERROR;
    }
    rt_thread_startup(thread);
}

//INIT_APP_EXPORT(Thread_RGB);
